package com.gd.data.platform.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * API调用日志实体类
 * 存储在ClickHouse中，用于实时计算和离线分析
 * 
 * @author gd-data-platform
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("api_call_logs")
public class ApiCallLog {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 接口名称
     */
    private String apiName;

    /**
     * 接口路径
     */
    private String apiPath;

    /**
     * 调用方IP
     */
    private String clientIp;

    /**
     * 调用方用户ID
     */
    private String userId;

    /**
     * 请求时间
     */
    private LocalDateTime requestTime;

    /**
     * 响应时间
     */
    private LocalDateTime responseTime;

    /**
     * 响应状态码
     */
    private Integer statusCode;

    /**
     * 响应时间（毫秒）
     */
    private Long responseTimeMs;

    /**
     * 请求参数
     */
    private String requestParams;

    /**
     * 响应数据大小（字节）
     */
    private Long responseSize;

    /**
     * 是否成功
     */
    private Boolean success;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 用户代理
     */
    private String userAgent;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
